# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
# Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
pkgname=openvswitch
pkgver=2.12.0
pkgrel=3
pkgdesc="A production quality, multilayer virtual switch"
url="http://openvswitch.org/"
arch="all"
license="Apache-2.0"
options="!check" # FIXME: no point in running tests if we ignore result
depends_dev="openssl-dev"
makedepends="$depends_dev perl linux-headers bash libcap-ng-dev
	python3 python3-dev py3-six py3-twisted"
subpackages="$pkgname-doc $pkgname-dbg $pkgname-dev
	$pkgname-bash-completion:bashcomp:noarch
	$pkgname-test:_test
	py3-$pkgname:_py3:noarch
	$pkgname-ovn:_ovn
	$pkgname-openrc
	"
source="http://openvswitch.org/releases/openvswitch-$pkgver.tar.gz
	ovsdb-server.initd
	ovsdb-server.confd
	ovs-vswitchd.initd
	ovs-vswitchd.confd
	ovs-modules.initd
	ifupdown-alpine.patch
	readme.debian.patch
	ovsdb-idlc.in-fix-dict-change-during-iteration.patch
	"


build() {
	./configure --prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--localstatedir=/var \
		--enable-ndebug \
		--enable-libcapng \
		PYTHON=/usr/bin/python3
	make
}

check() {
	make check || true
}

package() {
	make DESTDIR="$pkgdir" install

	local _py3site=$(python3 -c "import site; print(site.getsitepackages()[0])")
	mkdir -p "$pkgdir/$_py3site"
	cp -a "$pkgdir"/usr/share/openvswitch/python/* "$pkgdir/$_py3site"/
	rm -rf "$pkgdir"/usr/share/openvswitch/python

	mkdir -p "$pkgdir"/usr/share/bash-completion
	mv "$pkgdir"/etc/bash_completion.d "$pkgdir"/usr/share/bash-completion/completions

	rm -f "$pkgdir"/usr/lib/*.a
	install -Dm755 "$srcdir"/ovsdb-server.initd \
		"$pkgdir"/etc/init.d/ovsdb-server
	install -Dm755 "$srcdir"/ovs-vswitchd.initd \
		"$pkgdir"/etc/init.d/ovs-vswitchd
	install -Dm755 "$srcdir"/ovs-modules.initd \
		"$pkgdir"/etc/init.d/ovs-modules
	install -Dm644 "$srcdir"/ovsdb-server.confd \
		"$pkgdir"/etc/conf.d/ovsdb-server
	install -Dm644 "$srcdir"/ovs-vswitchd.confd \
		"$pkgdir"/etc/conf.d/ovs-vswitchd

	install -d "$pkgdir"/etc/network/if-pre-up.d \
		"$pkgdir"/etc/network/if-post-down.d
	install -m755 debian/ifupdown.sh \
		"$pkgdir"/etc/network/if-pre-up.d/openvswitch
	ln -s ../if-pre-up.d/openvswitch \
		"$pkgdir"/etc/network/if-post-down.d/openvswitch
	mkdir -p "$pkgdir"/usr/share/doc/openvswitch
	install -m644 debian/openvswitch-switch.README.Debian \
		"$pkgdir"/usr/share/doc/openvswitch/README.alpine
}

_mv_files() {
	local i
	for i in "$@"; do
		case $i in
		*/*) mkdir -p "$subpkgdir"/${i%/*};;
		*) mkdir -p "$subpkgdir";;
		esac
		mv "$pkgdir"/$i "$subpkgdir"/$i
	done
}

bashcomp() {
	depends=""
	pkgdesc="Bash completions for $pkgname"
	install_if="$pkgname=$pkgver-r$pkgrel bash-completion"

	amove usr/share/bash-completion/completions
}

_test() {
	pkgdesc="Open vSwitch testing utilities"
	depends="py3-$pkgname=$pkgver-r$pkgrel py-twisted"
	cd "$pkgdir"
	local _py3site=$(python3 -c "import site; print(site.getsitepackages()[0])")
	_mv_files \
		usr/bin/ovs-pcap \
		usr/bin/ovs-tcpdump \
		usr/bin/ovs-tcpundump \
		usr/bin/ovs-testcontroller \
		${_py3site#/}/ovstest
}

_py3() {
	pkgdesc="Python modules for Open vSwitch"
	depends="python3 py3-six"
	cd "$pkgdir"
	_mv_files usr/lib/python3*
}

_ovn() {
	pkgdesc="Open Virtual Network support for openvswitch"
	cd "$pkgdir"
	_mv_files \
		usr/share/openvswitch/scripts/ovn-ctl \
		usr/share/openvswitch/scripts/ovndb-servers.ocf \
		usr/share/openvswitch/ovn-sb.ovsschema \
		usr/share/openvswitch/ovn-nb.ovsschema \
		usr/bin/ovn-sbctl \
		usr/bin/ovn-northd \
		usr/bin/ovn-trace \
		usr/bin/ovn-detrace \
		usr/bin/ovn-nbctl \
		usr/bin/ovn-controller-vtep \
		usr/bin/ovn-controller \
		usr/bin/ovn-docker-underlay-driver \
		usr/bin/ovn-docker-overlay-driver
}

sha512sums="e9bf9030a1c5dbcddcf463d332a87c84326c21fb53eac743cd999da9e03f564a394e2362fe5ab2ebec35bb456fc76e10da6910c398886b41fbd28a35465b5aee  openvswitch-2.12.0.tar.gz
097d4721a78fff749c534910d98543778474406bd61b469b88a0d981a2a380556444437ec44278cead6d8688c45a38b2acbf1551acb9ab38d048f413728e3b88  ovsdb-server.initd
b1588d076bbfc7ef2dd46fce8e46186f40cbbc4667697f7ac13ddc68e34568fdab315fde47838de7f6d32916853190336cfe3735f672ad7cb624ae14dbff55a5  ovsdb-server.confd
4bff37f8bed32d5327b4b0433984ab8ffdce77f618034aa6ffd1ad4a7caa00703ea2bef312876dce5aafa4c17fe06dddd75e5c05c10e13bf8f5c3805a0654a96  ovs-vswitchd.initd
346aea099f51707d2b4fc9fdc8c1502582723fb4e00c4d5d1624b0378c94dfb76674fa95e2af894f36169df52109dbe441ee6a45aa744584d9e4c74d15a46c1d  ovs-vswitchd.confd
1e08aa5ac6ce55b97256478b9243c8a4c92a42a97fc70ea0439c832b12a775af28a127224ae6c4ce01642dde65f76c610a44105912338bf443d8ea390c2d9ccf  ovs-modules.initd
eca5b19954e6df7dc17c582e22e4b27533710d077039a54a2ba291ae7d3a2706872f5bcad8795ca58e06ca7e45a9b8c4c51e99aedbabd0e87623972ebcdca230  ifupdown-alpine.patch
177f8c98cfa261b440c398d3a3be4aeba694ee3d43400082427cd3b238de9c84736193a25968a6029f4a09957d00c6fcfb3f87f9317feb71732f31c91933fd29  readme.debian.patch
adea9745be1d4721a90f5802b94e5132e380efd9d046ded6b6e13a8d22093705a1f468e40bd6d26f9ef09900a0a9ac2b1e5e9783c807dda07762025c1fa46cfd  ovsdb-idlc.in-fix-dict-change-during-iteration.patch"
